切换主题
Docker常用软件和服务安装
- 操作系统层面:CentOS、Ubuntu、Windows、MacOS
- 常用中间件:ElasticSearch、MySQL、Redis
- 服务器:Nginx、Tomcat、
- 数据库:MySQL、
- 对象存储:Minio
Docker安装CentOS
Docker安装 ElasticSearch
shell
docker pull elasticsearch:7.9.2
mkdir -p /home/elasticsearch/data/
mkdir -p /home/elasticsearch/config/
1
2
3
2
3
编写配置文件
shellecho 'http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" '>>/home/elasticsearch/config/elasticsearch.yml
1
2
3修改文件夹权限
shellchmod -R 777 /home/elasticsearch/ ls -l # 查看文件权限
1
2启动elasticseach镜像
shelldocker run --name elasticsearch -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ -v /home/elasticsearch/config/elasticsearch.yml:/usr/shellare/elasticsearch/config/elasticsearch.yml \ -v /home/elasticsearch/data:/usr/shellare/elasticsearch/data \ -v /home/elasticsearch/plugins:/usr/shellare/elasticsearch/plugins \ -d elasticsearch:7.9.2
1
2
3
4
5
6
7
8
接下来我们就是拿浏览器访问啦。
在浏览器上输入:服务器IP地址:9200
可能出现的问题:
启动成功,但是访问失败的话,查看一下安全组中映射端口是否已经打开。如果是本地虚拟机,可能与防火墙相关(我用的云服务器,没有测试,如果有问题,还是需要大家自行去百度||谷歌一下)。
-e ES_JAVA_OPTS="-Xms64m -Xmx128m":配置内存大小出现了问题。
最后就还有可能是配置文件中出现了问题。
shellecho 'http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" '>>/home/elasticsearch/config/elasticsearch.yml
1
2
3http.host: 0.0.0.0
在冒号后面有一个空格的,这里的配置文件是yml
格式,所以一定要严格按照yml
格式来书写。
安装ik分词器
进入已经启动成功的elasticsearch容器。
shell
docker exec -it elasticsearch /bin/bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.2/elasticsearch-analysis-ik-7.9.2.zip
1
2
2
ps: 安装的ik分词器的版本一定要与elasticsearch的版本保持一致
下载过程中如果遇到选择,直接输入 y回车就可以了。
下载完成之后,退出去,重新启动elasticsearch容器。
shell
docker restart elasticsearch
1
测试ik分词器是否安装成功
安装完成后,我们再来进行测试遍,看看有什么样的变化。
postman post请求分词测试:http://服务器IP地址:9200/_analyze
json
{
"tokenizer":"ik_smart",
"text":"我爱技术"
}
1
2
3
4
2
3
4
结果
shell
{
"tokens": [
{
"token": "我",
"start_offset": 0,
"end_offset": 1,
"type": "CN_CHAR",
"position": 0
},
{
"token": "爱",
"start_offset": 1,
"end_offset": 2,
"type": "CN_CHAR",
"position": 1
},
{
"token": "技术",
"start_offset": 2,
"end_offset": 4,
"type": "CN_WORD",
"position": 2
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Docker安装MinIO
在 Docker 中部署 MinIO 非常简单。以下是一个基本的步骤说明:
拉取 MinIO 镜像:
bashdocker pull minio/minio
1运行 MinIO 容器: 使用以下命令启动 MinIO 容器,替换
和
为你自己的访问密钥和秘密密钥。bashdocker run -d -p 9000:9000 --name minio \ -e "MINIO_ACCESS_KEY=<YOUR_ACCESS_KEY>" \ -e "MINIO_SECRET_KEY=<YOUR_SECRET_KEY>" \ minio/minio server /data
1
2
3
4访问 MinIO 控制台: 打开浏览器,访问
http://localhost:9000
,使用你在第二步中设置的访问密钥和秘密密钥登录。数据持久化: 如果你想要持久化 MinIO 的数据,可以将主机目录挂载到容器中,例如:
bashdocker run -d -p 9000:9000 --name minio \ -e "MINIO_ACCESS_KEY=<YOUR_ACCESS_KEY>" \ -e "MINIO_SECRET_KEY=<YOUR_SECRET_KEY>" \ -v /path/to/your/data:/data \ minio/minio server /data
1
2
3
4
5
将 /path/to/your/data
替换为你希望存储 MinIO 数据的实际路径。
Docker安装MongoDB
Docker安装 MySQL
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
拉取MySQL镜像
1、在docker仓库中搜索mysql的镜像:
docker search mysql
1
2、下载MySQL镜像:
下载MySQL最新版
docker pull mysql
1
下载MySQL历史版本
1
3、查看本地镜像:
docker images -a
1
a. 参数-a 表示所有
b. 启动 mysql 容器,并进入 shell 命令交互界面: docker run -it mysql /bin/bash
( 参数 -i -t 等价于 -it 表示insert , 进入 ; /bin/bash 表示 shell 脚本交互界面 )
c. 可用 mysql --help | grep Distrib 查看 mysql 版本信息
( mysql --help 查看帮助信息,并在结果集中 查找 Distrib ,
“|”单竖线表示命令的连续执行,同时以前一个命令值域作为后一个命令的定义域 )
如下图, 我的 mysql 版本为 5.7.21 。
4、退出 当前交互窗口:exit 。此操作会关闭 mysql 服务 。
(对于创建的bush 容器,exit 退出后,容器也会退出。
这是因为对Docker 来说,容器中的应用退出了,容器也就没有必要继续运行了。)
—— 想要服务一直运行可以:
docker run -p 3306:3306 --name JY_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
1
(参数 -p 设置端口,--name 取名 ,-e MYSQL_ROOT_PASSWORD=123456 设置 账号为 root ,密码为 123456 ,
-d 表示作为一个守护进程在后台运行 )
5、查看运行中的容器:
docker ps
1
(可加参数 -a 表示所有,如果不加这个参数只会展示运行状态的容器,
按容器即服务的思想,某种程度上可以把容器也当作服务,)
这样 mysql 就已安装并成功启动,处于运行状态了。
可以通过 docker port 容器name 查看对应端口:
至于相关文件地址配置 ,可以在运行容器时设置 :
shell
docker run --name mysql \
-p 3306:3306 \
-v $PWD/conf/my.cnf:/etc/mysql/my.cnf \
-v $PWD/logs:/logs \
-v $PWD/data:/mysql_data \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
1
2
3
4
5
6
7
2
3
4
5
6
7
但要求对应路径对应文件已存在,才能成功挂载相内容到对应位置。
命令说明:
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v $PWD/conf/my.cnf:/etc/mysql/my.cnf:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf
-v $PWD/logs:/logs:将主机当前目录下的logs目录挂载到容器的/logs
-v $PWD/data:/mysql_data:将主机当前目录下的data目录挂载到容器的/mysql_data
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
创建并运行容器
方式1: 无挂载模式
shell
docker pull mysql //下载MySQL镜像
1
这种方式直接运行mysql之后,所有关于mysql的内容都在容器中,后续如果需要修改mysql的内容,需要手动进入容器内进行操作。且在宿主机上无备份,一旦容器被删除,数据也会被删除。
shell
docker run --name mysql --restart=always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql //启动MySQL
1
2
3
4
2
3
4
方式2: 数据卷挂载模式
和无挂载模式相对,通过数据卷挂载的方式运行容器,将容器内的部分重要文件映射到宿主机上。直接操作宿主机对应的映射文件就能和容器内作同步,方便操作的同时还能保证容器内的数据在宿主机上有一个备份。
下面的命令分别对mysql的日志文件、配置文件、数据文件进行了映射,你也可以自己修改。
shell
docker run --name mysql --restart=always -p 3306:3306 -v /mnt/aurora/mysql/log:/var/log/mysql -v /mnt/aurora/mysql/data:/var/lib/mysql -v /mnt/aurora/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=密码 -d mysql
1
安装方式二
shell
docker run --name mysql --restart=always \
-p 3306:3306 \
-v /mnt/dubing/mysql/log:/var/log/mysql \
-v /mnt/dubing/mysql/data:/var/lib/mysql \
-v /mnt/dubing/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_USER=root \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
shell
docker run --name mysql --restart=always \
-p 3306:3306 \
-v /opt/mysql/log:/var/log/mysql \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_USER=root \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
操作MySQL容器实例
进入容器
docker exec -it mysql bin/bash
1
修改密码
1
Docker安装Nginx
Docker安装RabbitMQ
docker pull rabbitmq:management //下载RabbitMQ镜像
docker run --name rabbit --restart=always -p 15672:15672 -p 5672:5672 -d rabbitmq:management //启动RabbitMQ,默认guest用户,密码也是guest。
1
2
2
使用 Docker 安装 Redis
安装命令
参考:https://blog.csdn.net/qq_25482375/article/details/126253645
执行挂载安装
- 查询搜索redis镜像
bash
sudo docker search redis
1
- 创建目录
bash
mkdir -p /mnt/dubbing/redis/data
mkdir -p /mnt/dubbing/redis/conf
1
2
2
- 创建配置文件 redis.conf
sudo touch /mnt/dubbing/redis/conf/redis.conf
#bind 127.0.0.1 //允许远程连接
protected-mode no
appendonly yes //持久化
requirepass 2419 //密码
1
2
3
4
2
3
4
- 运行实例
bash
docker run --name redis --restart=always \
-p 6379:6379 \
-v /mnt/dubbing/redis/data:/data \
-v /mnt/dubbing/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis
1
2
3
4
5
2
3
4
5
案例二
bash
docker run --name redis --restart=always \
-p 6379:6379 \
-v /opt/redis/data:/data \
-v /opt/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis
1
2
3
4
5
2
3
4
5
Docker安装Tomcat
Docker安装Ubuntu基础镜像
1、拉取镜像
docker pull ubuntu:22.04
1
2、启动镜像
docker run -d --name node1 -p 30001:22 ubuntu:22.04 sleep infinity
docker run -d --name node2 -p 30001:22 ubuntu:22.04 sleep infinity
docker run -d --name node3 -p 30001:22 ubuntu:22.04 sleep infinity
docker run -d --name node4 -p 30001:22 ubuntu:22.04 sleep infinity
1
2
3
4
2
3
4
查看运行中的容器
docker ps
1
进入节点
docker exec -it node1 /bin/bash
1
3、安装相关软件
安装ssh服务
apt install -y openssh-server
service ssh start
1
2
2
确保主机上的防火墙没有阻止访问映射的端口(如 2222
)。你可以使用以下命令查看防火墙状态:
对于
iptables
:iptables -L
1对于
ufw
(如果使用):ufw status
1
如果端口被阻止,可以添加规则以允许访问:
ufw allow 2222
1
确保 SSH 配置文件 /etc/ssh/sshd_config
中允许使用密码进行身份验证:
PermitRootLogin yes
PasswordAuthentication yes
1
2
2
修改后,重启 SSH 服务以使更改生效:
service ssh restart
1
修改ubuntu的密码,修改密码后然后就可以使用xshell登录了。
passwd root
1
安装vim【可选】
apt install vim
1
安装net-tools【可选】
sudo apt install net-tools
1
安装iproute2【可选】
apt install -y iproute2
1
安装curl和wget【可选】
apt install -y curl
apt install -y wget
1
2
2
4、使用XShell连接
使用XShell批量连接节点
5、构建四台计算节点之间互相免密钥访问(使用rsa方式生成)
先确定/etc/hosts
文件配置了node1、node2、node3、node4的
172.17.0.2 node1
172.17.0.3 node2
172.17.0.4 node3
172.17.0.5 node4
1
2
3
4
2
3
4
构建秘钥
ssh-keygen -t rsa -b 2048
1
赋值秘钥到其他节点上
ssh-copy-id root@node2
ssh-copy-id root@node3
ssh-copy-id root@node4
1
2
3
2
3
6、Docker安装NFS服务器
https://blog.csdn.net/ssp584731180/article/details/131113101